package com.zjsru.plan2023.oneday;

import java.util.Arrays;

/**
 * @Author: cookLee
 * @Date: 2023-11-15
 * K 个元素的最大和
 */
public class MaximizeSum {

    /**
     * 主
     * \
     * 输入：nums = [1,2,3,4,5], k = 3
     * 输出：18
     * 解释：我们需要从 nums 中恰好选择 3 个元素并最大化得分。
     * 第一次选择 5 。和为 5 ，nums = [1,2,3,4,6] 。
     * 第二次选择 6 。和为 6 ，nums = [1,2,3,4,7] 。
     * 第三次选择 7 。和为 5 + 6 + 7 = 18 ，nums = [1,2,3,4,8] 。
     * 所以我们返回 18 。
     * 18 是可以得到的最大答案。
     * \
     * 输入：nums = [5,5,5], k = 2
     * 输出：11
     * 解释：我们需要从 nums 中恰好选择 2 个元素并最大化得分。
     * 第一次选择 5 。和为 5 ，nums = [5,5,6] 。
     * 第二次选择 6 。和为 6 ，nums = [5,5,7] 。
     * 所以我们返回 11 。
     * 11 是可以得到的最大答案。
     * @param args args
     */
    public static void main(String[] args) {
        MaximizeSum maximizeSum = new MaximizeSum();
        int[] nums = new int[]{1,2,3,4,5};
        int k = 3;
        System.out.println(maximizeSum.maximizeSum(nums, k));
    }

    /**
     * 最大化总和:模拟
     *
     * @param nums nums
     * @param k    k
     * @return int
     */
    public int maximizeSum(int[] nums, int k) {
        Arrays.sort(nums);
        //获取最后一位数
        int max = nums[nums.length - 1];
        int sum = max;
        int temp = max;
        for (int i = 1; i < k; i++) {
            temp = temp + 1;
            sum += temp;
        }
        return sum;
    }

}
